不是更好的 RNN,而是取消 RNN。
Transformer 的核心判断很干净:序列建模的瓶颈不是“记忆单元不够聪明”,而是按时间步串行计算本身。把 token 之间的依赖改写成一次可并行的 attention routing,训练效率、长程依赖路径和表示学习同时改变。
研究动机:把序列建模从“时间循环”里解放出来。
2017 年主流 sequence transduction 模型仍是 encoder-decoder RNN / LSTM / GRU,再叠 attention。问题不是 attention 不够好,而是 RNN 的隐藏状态必须按位置顺序递推:训练样本内部不能充分并行,长序列被显存和 batch size 卡住,长程依赖需要穿过很长计算路径。
发现的问题
RNN 把序列位置对齐到计算时间步:隐藏状态 \(h_t\) 依赖 \(h_{t-1}\) 与当前位置输入。这带来天然串行性,尤其在长句子、长文档或大 batch 训练时成为硬约束。
为什么需要解决
机器翻译质量已经受益于 attention,但 attention 大多只是挂在 RNN/CNN 之上。只要底层主干仍串行,模型训练吞吐、远距离依赖路径和硬件利用率都受限。
Significance
论文提出第一个完全基于 self-attention、没有 recurrence 或 convolution 的 sequence transduction 架构。它不是一个模块替换,而是把“序列计算的主操作”换成了可并行的 token-token routing。
数学表示:attention 是可微分的检索与加权汇聚。
Transformer 仍保留 encoder-decoder 框架:encoder 把输入符号序列 \((x_1,\ldots,x_n)\) 映射为连续表示 \(\mathbf{z}=(z_1,\ldots,z_n)\),decoder 自回归生成 \((y_1,\ldots,y_m)\)。真正的变化在每层内部:用 multi-head self-attention 和 position-wise FFN 取代 recurrence / convolution。
Scaled Dot-Product Attention
输入是 queries \(Q\)、keys \(K\)、values \(V\)。兼容性由点积给出,除以 \(\sqrt{d_k}\) 防止 \(d_k\) 较大时 softmax 进入饱和区。
Multi-Head Attention
单个 attention 会把所有关系压到一个相似度空间里;multi-head 让模型在不同子空间里并行寻找依赖。base model 用 \(h=8\),每头 \(d_k=d_v=64\)。
Encoder
由 \(N=6\) 个相同层堆叠。每层包含 multi-head self-attention 与 position-wise FFN。每个 sub-layer 外有 residual connection,再接 layer normalization:
注意:原论文是 post-norm 结构;现代大模型常用 pre-norm,这是后续演化。
Decoder
同样 \(N=6\) 层,但每层多一个 encoder-decoder attention。decoder self-attention 使用 causal mask,把未来位置的 logits 设为 \(-\infty\),保证第 \(i\) 位只能看 \(
Position-wise FFN
每个位置独立应用两层 MLP,中间 ReLU。输入输出维度为 \(d_{\text{model}}\),内层维度为 \(d_{\text{ff}}\)。base: \(d_{\text{model}}=512\), \(d_{\text{ff}}=2048\)。
Positional Encoding:没有 RNN 后,位置从哪里来?
Transformer 没有 recurrence,因此必须把位置信息注入 embedding。论文使用固定 sinusoidal positional encoding,并说明 learned positional embedding 在实验中几乎同等效果;选择 sinusoid 是因为理论上可能外推到训练长度之外。
直觉:每个维度对应不同频率,位置差可以被线性关系表达,便于 attention 推断相对位置。
Table 1:为什么 self-attention 值得替代 RNN/CNN
这张表是论文的动机骨架。复杂度不是唯一指标,关键还有 sequential operations 和 maximum path length。
| Layer Type | Complexity per Layer | Sequential Operations | Maximum Path Length | 含义 |
|---|---|---|---|---|
| Self-Attention | \(O(n^2\cdot d)\) | \(O(1)\) | \(O(1)\) | 任意两位置直接相连;短序列下常比 RNN 更划算。 |
| Recurrent | \(O(n\cdot d^2)\) | \(O(n)\) | \(O(n)\) | 路径和计算都沿序列增长,长程依赖学习困难。 |
| Convolutional | \(O(k\cdot n\cdot d^2)\) | \(O(1)\) | \(O(\log_k(n))\) | 可并行,但远距离交互需要堆叠或 dilation。 |
| Restricted Self-Attention | \(O(r\cdot n\cdot d)\) | \(O(1)\) | \(O(n/r)\) | 为长输入降低 \(O(n^2)\) 成本,牺牲全局路径。 |
实验设计:机器翻译主线,句法分析验证泛化。
论文的实验不是“大模型堆算力”,而是证明 attention-only 架构在质量、训练时间和泛化上同时成立。主实验是 WMT 2014 English-German 与 English-French;额外用 English constituency parsing 测试迁移。
数据与 batch
- WMT 2014 EN-DE:约 4.5M sentence pairs。
- EN-DE 使用 BPE,shared source-target vocabulary 约 37K tokens。
- WMT 2014 EN-FR:约 36M sentence pairs,32K word-piece vocabulary。
- 按近似序列长度组 batch;每 batch 约 25K source tokens + 25K target tokens。
硬件与训练 schedule
- 单机 8 NVIDIA P100 GPUs。
- base:每 step 约 0.4s,100K steps,约 12 小时。
- big:每 step 约 1.0s,300K steps,约 3.5 天。
- base 模型参数 65M;big 模型参数 213M。
Optimizer
使用 Adam,参数为 \(\beta_1=0.9\)、\(\beta_2=0.98\)、\(\epsilon=10^{-9}\)。学习率采用 warmup + inverse square-root decay:
论文使用 \(warmup\_steps=4000\)。
Regularization & Inference
- Residual dropout:sub-layer 输出在加回 residual 前 dropout;embedding + positional encoding 的和也 dropout。
- base dropout \(P_{drop}=0.1\);big 在 EN-DE variation 表中为 0.3,EN-FR big 使用 0.1。
- Label smoothing:\(\epsilon_{ls}=0.1\),perplexity 变差但 BLEU 更好。
- Inference:beam size 4,length penalty \(\alpha=0.6\),最大输出长度 input length + 50。
- checkpoint averaging:base 取最后 5 个 checkpoint;big 取最后 20 个。
复现 Checklist
- 准备 WMT14 EN-DE 与 EN-FR 数据,并严格记录 tokenization/BPE pipeline。
- EN-DE shared BPE vocabulary 约 37K;EN-FR 32K word-piece。
- 实现 encoder-decoder stack:\(N=6\),post-norm residual。
- base: \(d_{\text{model}}=512\),\(d_{\text{ff}}=2048\),\(h=8\),\(d_k=d_v=64\)。
- big: \(d_{\text{model}}=1024\),\(d_{\text{ff}}=4096\),\(h=16\),\(P_{drop}=0.3\)。
- 使用 sinusoidal positional encoding,并在 embedding 后乘 \(\sqrt{d_{\text{model}}}\)。
- 确保 decoder self-attention 使用 causal mask。
- Adam 参数:\(\beta_1=0.9\),\(\beta_2=0.98\),\(\epsilon=10^{-9}\)。
- LR schedule 使用 \(warmup\_steps=4000\)。
- label smoothing \(\epsilon_{ls}=0.1\)。
- batch 按 token 数控制,约 25K source + 25K target tokens。
- 推理使用 beam search,beam=4,length penalty \(\alpha=0.6\)。
- base 平均最后 5 checkpoints;big 平均最后 20 checkpoints。
- BLEU 评测应对齐 newstest2014 与当时的 tokenization / scoring 脚本,否则数字不可直接比。
结果:更高 BLEU,更低训练成本,更短依赖路径。
论文的主结果不是单纯刷分,而是在训练 FLOPs 低一个量级的情况下超过当时强 baseline。尤其 EN-DE 上,Transformer big 超过所有已发表 ensemble 超过 2 BLEU。
Table 2:Machine Translation 主结果
| Model | EN-DE BLEU | EN-FR BLEU | EN-DE Cost | EN-FR Cost |
|---|---|---|---|---|
| ByteNet | 23.75 | - | - | - |
| Deep-Att + PosUnk | - | 39.2 | - | \(1.0\cdot10^{20}\) |
| GNMT + RL | 24.6 | 39.92 | \(2.3\cdot10^{19}\) | \(1.4\cdot10^{20}\) |
| ConvS2S | 25.16 | 40.46 | \(9.6\cdot10^{18}\) | \(1.5\cdot10^{20}\) |
| MoE | 26.03 | 40.56 | \(2.0\cdot10^{19}\) | \(1.2\cdot10^{20}\) |
| Deep-Att + PosUnk Ensemble | - | 40.4 | - | \(8.0\cdot10^{20}\) |
| GNMT + RL Ensemble | 26.30 | 41.16 | \(1.8\cdot10^{20}\) | \(1.1\cdot10^{21}\) |
| ConvS2S Ensemble | 26.36 | 41.29 | \(7.7\cdot10^{19}\) | \(1.2\cdot10^{21}\) |
| Transformer (base) | 27.3 | 38.1 | \(3.3\cdot10^{18}\) | |
| Transformer (big) | 28.4 | 41.8 | \(2.3\cdot10^{19}\) | |
BLEU 对比
训练成本对比
成本条以 \(1.2\cdot10^{21}\) FLOPs 为 100%。论文估算方式:训练时间 × GPU 数 × 单 GPU sustained TFLOPS。
Table 3:架构消融与模型规模
| 变体 | \(N\) | \(d_{\text{model}}\) | \(d_{\text{ff}}\) | \(h\) | \(d_k\) | \(d_v\) | \(P_{drop}\) | PPL | BLEU | Params M |
|---|---|---|---|---|---|---|---|---|---|---|
| base | 6 | 512 | 2048 | 8 | 64 | 64 | 0.1 | 4.92 | 25.8 | 65 |
| A: 1 head | - | - | - | 1 | 512 | 512 | - | 5.29 | 24.9 | - |
| A: 4 heads | - | - | - | 4 | 128 | 128 | - | 5.00 | 25.5 | - |
| A: 16 heads | - | - | - | 16 | 32 | 32 | - | 4.91 | 25.8 | - |
| A: 32 heads | - | - | - | 32 | 16 | 16 | - | 5.01 | 25.4 | - |
| B: smaller \(d_k=16\) | - | - | - | - | 16 | - | - | 5.16 | 25.1 | 58 |
| B: smaller \(d_k=32\) | - | - | - | - | 32 | - | - | 5.01 | 25.4 | 60 |
| C: \(N=2\) | 2 | - | - | - | - | - | - | 6.11 | 23.7 | 36 |
| C: \(d_{\text{model}}=1024\) | - | 1024 | - | - | 128 | 128 | - | 4.66 | 26.0 | 168 |
| C: \(d_{\text{ff}}=4096\) | - | - | 4096 | - | - | - | - | 4.75 | 26.2 | 90 |
| D: no dropout | - | - | - | - | - | - | 0.0 | 5.77 | 24.6 | - |
| E: learned positional embeddings | - | positional embedding instead of sinusoids | 4.92 | 25.7 | - | |||||
| big | 6 | 1024 | 4096 | 16 | - | - | 0.3 | 4.33 | 26.4 | 213 |
Head 数不是越多越好
单头比 base 低 0.9 BLEU,但 32 heads 也掉分。解释:head 太少表示子空间不够,head 太多导致每头维度太小。
\(d_k\) 太小会伤质量
把 key 维度降到 16 或 32,BLEU 明显下降。论文推断 compatibility 判断并不容易,简单 dot product 可能还不够。
Dropout 非常关键
没有 dropout,dev BLEU 从 25.8 降到 24.6,PPL 变差到 5.77。模型容量足够大时,regularization 是质量开关。
Table 4:English Constituency Parsing 泛化实验
| Parser | Training | WSJ 23 F1 |
|---|---|---|
| Vinyals & Kaiser et al. (2014) | WSJ only, discriminative | 88.3 |
| Petrov et al. (2006) | WSJ only, discriminative | 90.4 |
| Zhu et al. (2013) | WSJ only, discriminative | 90.4 |
| Dyer et al. (2016) | WSJ only, discriminative | 91.7 |
| Transformer (4 layers) | WSJ only, discriminative | 91.3 |
| Transformer (4 layers) | semi-supervised | 92.7 |
| Luong et al. (2015) | multi-task | 93.0 |
| Dyer et al. (2016) | generative | 93.3 |
Parsing 设置:4-layer Transformer,\(d_{\text{model}}=1024\);WSJ only 约 40K training sentences,16K vocabulary;semi-supervised 使用约 17M sentences,32K vocabulary;beam size 21,\(\alpha=0.3\),最大输出 input + 300。
Figure 不是插图,而是论文的操作说明。
架构图说明数据流,attention 图说明 routing 机制,appendix 可视化说明不同 head 学到不同句法/语义关系。图片来自 ar5iv 对 arXiv 源文件的渲染资源。
犀利评审:这篇论文强在问题重构,不强在实验完美。
历史地位毋庸置疑,但作为 reviewer 仍要分清“开创范式”和“实验论证充分”是两件事。
问题定义极准
它不是问“怎么做更强 RNN”,而是问“能不能移除 sequential bottleneck”。这个 framing 直接打开了后续 scaling path。
架构简单且可组合
attention、FFN、residual、LayerNorm、positional encoding 都是清晰模块;这让社区能快速复现、改造、扩展。
性能与效率同时成立
EN-DE 和 EN-FR 的 BLEU / FLOPs 对比非常有说服力:不是拿更大计算堆出来,而是更适合硬件并行。
baseline 不是完全 controlled
主表主要比较 literature results,不是同代码库、同硬件、同调参预算下的公平 ablation。它足以证明潜力,但不足以隔离所有因素。
\(O(n^2)\) 代价没有真正解决
论文提到 restricted attention 作为未来工作,但长上下文场景在正文里没有实验。这是后续 sparse attention、linear attention、FlashAttention 的入口。
Attention 可解释性有过度诱惑
appendix 可视化很漂亮,但“head 看起来像句法关系”不等于 attention 是可靠解释。后续研究也反复提醒 attention weights 不能简单等同因果解释。
补 controlled baselines
同一训练框架里比较 RNN/CNN/attention-only,统一数据、tokenization、checkpoint averaging、beam search 和 tuning budget。
补长序列实验
在 \(n\) 明显大于 \(d\) 或 memory-bound 场景测试,系统评估 full attention、restricted attention 和 convolution/RNN 的 crossover。
补 scaling curve
用参数量、训练 FLOPs、wall-clock、数据量画 scaling 曲线,而不是只给两个模型点 base/big。
顶会 reviewer 口吻
Rating: Strong Accept. 贡献不是某个组件,而是把 sequence transduction 的计算主干从 recurrence/convolution 改成 self-attention,并用足够强的机器翻译结果证明可行。弱点是实验范围仍偏窄,长序列复杂度和 attention 解释性没有被充分解决。但这类论文的价值在于打开范式,不在于一次性封闭所有问题。
这篇论文真正留下的不是 attention,而是“路径长度思维”。
如果只记住 “Attention Is All You Need”,容易误解成 attention 模块万能。更深的启发是:当一个系统的学习被信息路径、并行度和硬件利用率卡住时,最重要的改进可能不是做更聪明的单元,而是改写信息流拓扑。
从模型到 Agent 的迁移
RNN 是“顺序处理”,Transformer 是“全局上下文路由”。这与 Personal Context OS 很像:不应该让 agent 每次从头线性读历史,而应该把长期 context 做成可检索、可路由、可组合的外部记忆。
从工程到审美的迁移
Transformer 的美在于它删除了 recurrence 和 convolution,却没有删除能力;相反,正确表示让能力更直接地显现。这与欧拉恒等式一样:美不是少,而是结构压缩后的少。